package com.dq.order.controller;

import com.dq.commonutils.pojo.DqException;
import com.dq.commonutils.vo.Result;
import com.dq.order.service.PayLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 支付接口-API
 * @author Dq
 * @since 2022-08-17 15:25:42
 */
@RestController
@RequestMapping("order/paylog")
// @CrossOrigin
public class PayLogController {
    @Autowired
    public PayLogService payLogService;

    /**
     * 创建生成二维码的接口
     * @return Map
     */
    @GetMapping("createQrCode/{orderNo}")
    public Result createQrCode(@PathVariable("orderNo") String orderNo){
        //统一用map封装返回
        Map<String,Object> resultMap=payLogService.createQrCode(orderNo);
        // System.err.println("创建native二维码返回的map参数===>"+resultMap);
        return Result.success(resultMap);
    }

    /**
     * 查询微信支付的状态
     * 1. 插入数据库支付成功
     * 2. 修改原来订单的state 从0->1
     * @param orderNo
     */
    @GetMapping("queryWxPayState/{orderNo}")
    public Result queryWxPayState(@PathVariable("orderNo") String orderNo){
        //查询wx支付后返回的信息
        Map<String,String> resultMap=payLogService.queryWxPayStatu(orderNo);
        System.err.println("通过查询订单返回的map参数"+resultMap);
        //判断此map的状态
        if (resultMap == null) {
            throw new DqException(20001,"支付ERROR");
        }
        if (resultMap.get("trade_state").equals("SUCCESS")){ //如果查询状态成功 把订单表中此orderNo状态变为1  并且插入支付信息
            payLogService.updateOrderStateAndInsertPayInfo(resultMap);
            HashMap<String, String> map = new HashMap<>();
            map.put("code","2000");
            map.put("msg","支付成功");
            return Result.success(map);
        }
        HashMap<String, String> map = new HashMap<>();
        map.put("code","2005");
        map.put("msg","正在支付中");
        return Result.success(map);
    }
}